Commonly, there are a variety of methods of streaming data from one device to another. One method involves streaming data from a device, and when enough data has been received, the data may be provided to a user. Another method involves providing data to a user in a more real-time basis. These methods have drawbacks however, as the first method produces long wait times before providing data to the user, while the second method usually provides poor quality data as changing network conditions may affect real-time connections between devices.